home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Snippets / PNL Libraries / MyMenus.p < prev    next >
Encoding:
Text File  |  1997-01-26  |  2.6 KB  |  108 lines  |  [TEXT/CWIE]

  1. unit MyMenus;
  2.  
  3. interface
  4.  
  5.     uses
  6.         Types, Menus;
  7.  
  8.     procedure SetIDItem (menu, item: integer; s: Str255);
  9.     function GetIDItem (menu, item: integer): Str255;
  10.     procedure SetItemEnable (mh: MenuHandle; item: integer; enable: boolean);
  11.     function GetItemEnable (mh: MenuHandle; item: integer): boolean;
  12.     procedure SetIDItemEnable (menu, item: integer; enable: boolean);
  13.     function GetIDItemEnable (menu, item: integer): boolean;
  14.     procedure DotItem (mh: MenuHandle; item: integer; dotted: boolean);
  15.     procedure ClearMenuHandle (mh: MenuHandle);
  16.     procedure SafeAppendMenu (mh: MenuHandle; item: Str255);
  17.  
  18. implementation
  19.  
  20.     uses
  21.         Balloons, 
  22.         MyAssertions;
  23.  
  24. {$ifc not do_debug}
  25. {$definec AssertValidMenuID(m)}
  26. {$elsec}
  27. {$definec AssertValidMenuID(m) AssertValidMenuIDCode(m)}
  28. {$endc}
  29.  
  30.     procedure AssertValidMenuIDCode( menu: integer );
  31.     begin
  32.         Assert( (menu = kHMHelpMenuID) | (menu > 0) );
  33.     end;
  34.     
  35.  
  36.     procedure ClearMenuHandle (mh: MenuHandle);
  37.     begin
  38.         Assert( mh <> nil );
  39.         while (CountMItems(mh) > 0) do begin
  40.             DeleteMenuItem(mh, 1);
  41.         end;
  42.     end;
  43.  
  44.     procedure SafeAppendMenu (mh: MenuHandle; item: Str255);
  45.     begin
  46.         Assert( (mh <> nil) & (item <> '') );
  47.         AppendMenu(mh, 'fred');
  48.         SetMenuItemText(mh, CountMItems(mh), item);
  49.     end;
  50.  
  51.     procedure SetIDItem (menu, item: integer; s: Str255);
  52.     begin
  53.         AssertValidMenuID( menu );
  54.         Assert( (item > 0) & (s <> '') );
  55.         SetMenuItemText(GetMenuHandle(menu), item, s);
  56.     end;
  57.  
  58.     function GetIDItem (menu, item: integer): Str255;
  59.         var
  60.             s: Str255;
  61.     begin
  62.         AssertValidMenuID( menu );
  63.         Assert( item > 0 );
  64.         GetMenuItemText(GetMenuHandle(menu), item, s);
  65.         GetIDItem := s;
  66.     end;
  67.  
  68.     procedure SetItemEnable (mh: MenuHandle; item: integer; enable: boolean);
  69.     begin
  70.         Assert( (mh <> nil) & (item >= 0) );
  71.         if enable then begin
  72.             EnableItem(mh, item);
  73.         end else begin
  74.             DisableItem(mh, item);
  75.         end;
  76.     end;
  77.  
  78.     procedure SetIDItemEnable (menu, item: integer; enable: boolean);
  79.     begin
  80.         AssertValidMenuID( menu );
  81.         Assert( item >= 0 );
  82.         SetItemEnable(GetMenuHandle(menu), item, enable);
  83.     end;
  84.  
  85.     function GetItemEnable (mh: MenuHandle; item: integer): boolean;
  86.     begin
  87.         Assert( (mh <> nil) & (item >= 0) );
  88.         GetItemEnable := (item > 31) | btst(mh^^.enableFlags, item);
  89.     end;
  90.  
  91.     function GetIDItemEnable (menu, item: integer): boolean;
  92.     begin
  93.         AssertValidMenuID( menu );
  94.         Assert( item >= 0 );
  95.         GetIDItemEnable := GetItemEnable(GetMenuHandle(menu), item);
  96.     end;
  97.  
  98.     procedure DotItem (mh: MenuHandle; item: integer; dotted: boolean);
  99.     begin
  100.         Assert( (mh <> nil) & (item > 0) );
  101.         if dotted then begin
  102.             SetItemMark(mh, item, '•');
  103.         end else begin
  104.             SetItemMark(mh, item, chr(0));
  105.         end;
  106.     end;
  107.  
  108. end.